package com.mrjy.common.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import java.util.Map.Entry;


public class HttpUtil {
	
	
	public static String doPost(String url, Map<String, String> params) {
		URL u = null;
		HttpURLConnection con = null;
		// 构建请求参数
		StringBuffer sb = new StringBuffer();
		if (params != null) {
			for (Entry<String, String> e : params.entrySet()) {
				sb.append(e.getKey());
				sb.append("=");
				sb.append(e.getValue());
				sb.append("&");
			}			
			sb.substring(0, sb.length() - 1);
		}		
		// 尝试发送请求
		try {
			u = new URL(url);
			con = (HttpURLConnection) u.openConnection();
			con.setRequestMethod("POST");
			con.setDoOutput(true);
			con.setDoInput(true);
			con.setUseCaches(false);
			con.setRequestProperty("Content-Type",
					"application/x-www-form-urlencoded");
			//con.setRequestProperty("accept", "*/*");
			//con.setRequestProperty("connection", "Keep-Alive");
			//con.setRequestProperty("user-agent",
            //        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
			//不使用HttpURLConnection的缓存机制，直接将流提交到服务器上
			//con.setChunkedStreamingMode(0);
			
//			con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
			OutputStreamWriter osw = new OutputStreamWriter(
					con.getOutputStream(), "UTF-8");
			osw.write(sb.toString());
			osw.flush();
			osw.close();
		} catch (Exception e) {
			e.printStackTrace();
		} 

		// 读取返回内容
		StringBuffer buffer = new StringBuffer();
		BufferedReader br = null ;
		try {
			br = new BufferedReader(new InputStreamReader(
					con.getInputStream(), "UTF-8"));
			String temp;
			while ((temp = br.readLine()) != null) {
				buffer.append(temp);
				buffer.append("\n");
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				if (con != null) {
					con.disconnect();
				}
				if(br != null){
					br.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return buffer.toString();
	}
	
	public static String doGet(String url, Map<String, String> params) {
		URL u = null;
		HttpURLConnection con = null;
		// 构建请求参数
		StringBuffer sb = new StringBuffer();
		if (params != null) {
			for (Entry<String, String> e : params.entrySet()) {
				sb.append(e.getKey());
				sb.append("=");
				sb.append(e.getValue());
				sb.append("&");
			}			
		}
		String s = sb.substring(0, sb.length() - 1);		
		// 尝试发送请求
		try {
			u = new URL(url + "?" + s);
			con = (HttpURLConnection) u.openConnection();
			con.setRequestMethod("GET");
			con.setRequestProperty("Content-Type","application/json; charset=utf-8");
			con.setRequestProperty("Authorization","dms s_5e95e2df2895cff062d25abd9cdbd417");
			//不使用HttpURLConnection的缓存机制，直接将流提交到服务器上
			//con.setChunkedStreamingMode(0);
		} catch (Exception e) {
			e.printStackTrace();
		} 

		// 读取返回内容
		StringBuffer buffer = new StringBuffer();
		BufferedReader br = null ;
		try {
			br = new BufferedReader(new InputStreamReader(
					con.getInputStream(), "UTF-8"));
			String temp;
			while ((temp = br.readLine()) != null) {
				buffer.append(temp);
				buffer.append("\n");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				if (con != null) {
					con.disconnect();
				}
				if(br != null){
					br.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return buffer.toString();
	}
	
	
	public static String doGet(String url) {
		URL u = null;
		HttpURLConnection con = null;
		// 构建请求参数
		// 尝试发送请求
		try {
			u = new URL(url);
			con = (HttpURLConnection) u.openConnection();
			con.setRequestMethod("GET");
			con.setRequestProperty("Content-Type","application/json; charset=utf-8");
			con.setRequestProperty("Authorization","dms s_5e95e2df2895cff062d25abd9cdbd417");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (con != null) {
				con.disconnect();
			}
		}

		// 读取返回内容
		StringBuffer buffer = new StringBuffer();
		BufferedReader br =  null ;
		try {
			br = new BufferedReader(new InputStreamReader(
					con.getInputStream(), "UTF-8"));
			String temp;
			while ((temp = br.readLine()) != null) {
				buffer.append(temp);
				buffer.append("\n");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				if(br != null){
					br.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return buffer.toString();
	}
	
	
}
